'''
@File    :   logger.py
@Time    :   2025/06/27 16:55:37
@Author  :   ZhangQifeng 
'''
import colorlog
import logging
import os
from logging.handlers import RotatingFileHandler
from core.config_loader import load_config


# 加载配置
CONFIG = load_config()['logging']
LOG_ROOT = CONFIG['log_root']
def setup_logger():
    """
    初始化日志系统，配置彩色控制台和文件日志输出
    """
    log_dir = CONFIG['log_dir']
    os.makedirs(log_dir, exist_ok=True)
    log_root = LOG_ROOT
    # 获取主 logger（所有子 logger 都继承它）
    logger = logging.getLogger(log_root)
    logger.setLevel(CONFIG['level'])

    if not logger.handlers:
        # 控制台处理器（带颜色）
        console_handler = colorlog.StreamHandler()
        console_handler.setLevel(CONFIG['console_level'])
        console_formatter = colorlog.ColoredFormatter(
            CONFIG['format']['colored_console'],
            datefmt=CONFIG['datefmt'],
            log_colors={
                'DEBUG': 'cyan',
                'INFO': 'black',
                'WARNING': 'yellow',
                'ERROR': 'red',
                'CRITICAL': 'bold_red',
            }
        )
        console_handler.setFormatter(console_formatter)
        logger.addHandler(console_handler)

        # 文件处理器（不带颜色）
        file_handler = RotatingFileHandler(
            os.path.join(log_dir, 'log.log'),
            maxBytes=CONFIG['max_bytes'],
            backupCount=CONFIG['backup_count'],
            encoding=CONFIG['encoding']
        )
        file_handler.setLevel(CONFIG['file_level'])
        file_formatter = logging.Formatter(CONFIG['format']['file'], datefmt=CONFIG['datefmt'])
        file_handler.setFormatter(file_formatter)
        logger.addHandler(file_handler)

    return logger

def get_logger(name=None):
    root = LOG_ROOT
    if name:
        return logging.getLogger(f"{root}.{name}")
    else:
        return logging.getLogger(root)
    